草庐IT

Android ArrayList迭代

全部标签

android - 枚举/迭代 Activity 中的所有 View ?

有没有一种方法可以遍历Activity中的所有View?像这样的东西:Iteratorit=getViewIterator();...这真的存在吗? 最佳答案 如果您的所有View都在LinearLayout或扩展ViewGroup的其他容器中,您可以使用函数getChildCount()和getChildAt(int)并遍历所有的包含View。希望这对您有所帮助。 关于android-枚举/迭代Activity中的所有View?,我们在StackOverflow上找到一个类似的问题:

c++ - 指针 vector 的迭代器未正确解除引用

这是我的问题:我有一个std::vector用于跟踪子控件。我有这两个函数来返回迭代器:std::vector::const_iteratorAguiWidgetBase::getChildBeginIterator()const{returnchildren.begin();}std::vector::const_iteratorAguiWidgetBase::getChildEndIterator()const{returnchildren.end();}然后我像这样使用它:for(std::vector::const_iteratorit=box->getChildBeginIt

c++ - 获取 std::vector 的迭代器的更短方法

假设我有一个这样的vector。std::vector*something=newstd::vector;//bytheway,isthistherightwaytodothis?现在我想为此获得一个迭代器...所以我会这样做。std::vector::iteratoriter;但我发现它对我的代码来说有点太多了。我想知道,是否还有更简单的方法来请求迭代器而不考虑类型?我在想类似的东西。something::iteratoriter;//OK,don’tlaughatme,IamstillbeginningwithC++好吧,它显然失败了,但我猜你明白了。如何完成这个或类似的事情?

c++ - 列表迭代器错误 : "no match for operator+" ,

对于下面的代码,我在行的标题中收到错误while((*(It2+code)).exists){voidlocatetohashtable(std::listelist,int*m,std::list&table,std::list&keylist){std::list::iteratorIt2=table.begin();inti=0;intk=0;std::list::iteratorIt;for(It=elist.begin();It!=elist.end();++It){intcode=hash_func(stringIntValue((*It).name),*m,i);whil

c++ - 迭代器或 reverse_iterator 的一个变量?

这个问题在这里已经有了答案:CanIconvertareverseiteratortoaforwarditerator?(5个答案)关闭4年前。我想在for循环中迭代一些std::vector,但根据某些条件,vector应该向前或向后迭代。我想,我可以通过使用普通迭代器或像这样的反向迭代器轻松地做到这一点:#include#includeusingnamespacestd;intmain(){vectorvec{0,1,2,3,5,6,7};boolreverse=true;std::iteratorit,end_it;if(reverse){it=vec.rbegin();end_

c++ - 如何将消息解析为 DynamicMessage 类,然后通过字段进行迭代?

这就是我想弄清楚的,他们的文档对此解释得不够好,至少对我来说是这样......塞纳里奥:我有5个使用C++协议(protocol)生成的协议(protocol)文件。我的应用程序需要接收一条消息,然后能够在访问所有字段的值和名称时循环访问它们。我想做的是将一条消息解析到DynamicMessage类中,然后通过字段进行迭代。这样我就不必确切知道它是什么消息,我可以用一种通用的方式处理它们。我知道可以通过将消息解析为特定类型然后将它们视为消息基类来处理消息,但对于我的应用程序来说这是不可取的。看起来我想做的事情应该可以通过“--descriptor_set_out”和动态消息类实现。我尝

c++ - 为什么删除不支持反向迭代器?

我刚写了下面的代码,很惊讶它没有编译:std::dequecontainer;//fillingthecontainer...for(autoit=container.rbegin();it!=container.rend();++it)if(*it==5){container.erase(it);break;}如您所见,我想删除符合特定条件的最后一个元素(如果有的话)。错误是nomatchingfunctionforcalltostd::deque::erase(std::reverse_iterator...起初我不相信这是由反向迭代器引起的,但事实确实如此,因为将rbegin/r

c++ - 如何为按需构造其值的迭代器实现 operator->?

我有一个像容器一样工作的C++类:它有size()和operator[]成员函数。存储在容器“中”的值是std::tuple对象。但是,容器实际上并不将元组保存在内存中;相反,它根据以不同形式存储的基础数据按需构建它们。std::tupleMyContainer::operator[](std::size_tn)const{//Example:drawcorrespondingelementsfromparallelarraysreturn{underlying_data_a[n],underlying_data_b[n],underlying_data_c[n]};}因此,opera

c++ - 从 std::copy 和 std::copy_n 中提取输入迭代器

我试图实现一种反序列化方法,该方法采用输入迭代器并执行一系列block读取(使用std::copy和std::copy_n)。像这样(只是一个例子):templateInputItunserialize(InputItit){std::copy_n(it,sizeof(header_type),reinterpret_cast(&header));std::copy_n(it,header.payload_size,std::back_inserter(payload));it=optional.unserialize(it);returnit;}在这种情况下我如何推进输入迭代器以便每

c++ - 非连续容器(如 std::deque)的随机访问迭代器是如何实现的?

我了解随机访问迭代器如何为std::vector这样的连续容器工作:迭代器只是维护一个指向当前元素的指针,任何加法/减法都应用于该指针。但是,我对如何为非连续容器实现类似功能感到困惑。我对std::deque:iterator工作原理的第一个猜测是,它维护了一个指向它包含的连续内存组的某个表的指针,但我不确定。典型的标准库将如何实现它? 最佳答案 您可以满足std::deque的要求用std::vector>>大致。加上一个低/高水位线,告诉您第一个/最后一个元素在哪里。(对于定义N的实现,它可能随T而变化,并且std::array